<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //队列的封装
        function Queue() {
            //属性
            this.items = [];
            //方法
            //1.将元素加入到队列中
            Queue.prototype.enqueue = function (element) {
                this.items.push(element);
            }
            //2.从队列中删除前端元素
            Queue.prototype.dequeue = function () {
                return this.items.shift();
            }
            //3.查看前端的元素
            Queue.prototype.front = function () {
                return this.items[0];
            }
            //4.查看队列是否为空
            Queue.prototype.isEmpty = function () {
                return this.items.length == 0;
            }
            //5.查看队列元素的个数
            Queue.prototype.size = function () {
                return this.items.length
            }
            //6.toString方法
            Queue.prototype.toString = function () {
                var resultString = '';
                for (var i = 0; i < this.items.length; i++) {
                    resultString += this.items[i] + ''
                }
                return resultString;
            }
        }

        //击鼓传花
        function passGame(nameList, num) {
            //1.创建一个队列结构
            var queue = new Queue();

            //2.将所有人依次加入到队列中
            for (var i = 0; i < nameList.length; i++) {
                queue.enqueue(nameList[i])
            }

            //3.开始数数字，不是num时重新加入到队列的末尾，是num将其删除
            while (queue.size() > 1) {
                for (var i = 0; i < num - 1; i++) {
                    queue.enqueue(queue.dequeue())
                }
                queue.dequeue()
            }

            //4.获取剩下的人
            // alert(que.size());
            var endName = queue.front();
            alert('最终剩下的人：' + endName);

            return nameList.indexOf(endName);
        }

        //测试击鼓传花
        names = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
        alert(passGame(names, 3));

    </script>
</body>

</html>